import Dict from '@/components/Dict/Dict.js'

// Vue 插件安装函数
const install = function(Vue) {
  // 全局混入：为组件注入字典相关逻辑
  Vue.mixin({
    data() {
      // 若组件配置了 $options.dicts（字典名称数组），则初始化 dict 数据
      if (this.$options.dicts && Array.isArray(this.$options.dicts)) {
        return {
          dict: {
            dict: {},    // 存储「字典名-值-完整项」映射（如 dict.dict.user_status['1'] = {value: '1', text: '启用'}）
            text: {}     // 存储「字典名-值-text」映射（如 dict.text.user_status['1'] = '启用'）
            // 字典数组会在 init 时动态添加（如 dict.user_status = [{value: '1', text: '启用'}, ...]）
          }
        }
      }
      return {}
    },
    created() {
      // 若组件配置了 dicts，则初始化字典
      if (this.$options.dicts && Array.isArray(this.$options.dicts)) {
        new Dict(this.dict).init(
          this.$options.dicts,
          () => {
            // 字典初始化完成后，触发 nextTick 再发送事件（确保 DOM 已更新）
            this.$nextTick(() => {
              this.$emit('dictReady') // 组件可监听此事件，处理字典就绪后的逻辑
            })
          }
        )
      }
    }
  })
}

// 支持 Vue .use() 安装
export default { install }
